RRDTool est un outil qui permet de faire des bases de données (Round-Robin Database). Il permet aussi de faire des graphes.
Dans ces bases de données on enregistre des informations tel que l'audience d'une radio en fonction de l'heure et du nombre d'auditeurs connectés simultannés
Nous allons pouvoir faire plusieurs choses avec les données :
- Affichage des données en fonction du temps (par exemple un graph pour le jour en cours, pour la semaine, pour le mois et l'année).
- Si la radio a plusieurs canaux différents par exemple une radio avec de la musique uniquement et l'autre avec des animateurs on poura combiner les données des deux stations sur le meme graph.
Il suffit d'installez le paquet rrdtool
Maintenant nous allons attaquer les choses sérieuses !
Cet exemple permet de créer une base de donnée RRD Tool pour deux radios.
Pour ce qui est de l'heure on converti la date et l'heure actuel en timestamp unix (nombre de secondes depuis le 1er janvier 1970 à 0h00:00)
Note pour connaitre le timestamp plusieurs solutions :
$ date +%s
Nous allons créer une base RRD pour une Radio avec 2 flux : Rock et Alternative
rrdtool create radios.rrd --start 1297810800 \ DS:rock:GAUGE:600:U:U \ DS:alternative:GAUGE:600:U:U \ RRA:AVERAGE:0.5:1:24 \ RRA:AVERAGE:0.5:6:12
Reprenons ligne par ligne le fonctionnement :
La seconde et la 3eme ligne sont des DS (DATA SOURCE) sources de données en Français.
Explications :
Pour plus d'infos je vous renvoi à la doc http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html
Passons à la 4eme et 5eme ligne qui sont les Round Robin Archives.
Une archive se compose d'un certain nombre de valeurs de données ou des statistiques pour chacune des sources de données définies (DS) et est définie par une ligne RRA.
Idem pour la ligne suivante :
rrdtool update radios.rrd \ 1297810801:0:0 \ 1297811101:5:1 \ 1297811401:8:0 \ 1297811701:10:2 \ 1297812001:13:3 \ 1297812301:15:5 \ 1297812601:23:4 \ 1297812901:30:8 \ 1297813201:34:9 \ 1297813501:35:5 \ 1297813801:38:10 \ 1297814101:38:12
A 0h00:01 il y avait 0 auditeur sur les deux flux. (timestamp:valeurflux1:valeurflux2)
A 0h05:01 il y avait 5 auditeurs sur le flux rock et 1 auditeur sur le flux alternative
Et on continue d'insérer les données grâce au timestamp toutes les 300 secondes (5mn)
A savoir je peux pas enregistrer ma premiere donnée a 0h00:00 car lors de la création de notre RRD nous avons précisé qu'il commence a 0h00:00 il faut donc ajouté une seconde pour le 1er enregistrement. Sinon vous aurez une erreur de ce type : ERROR: radios.rrd: illegal attempt to update using time 1297810800 when last update time is 1297810800 (minimum one second step).
rrdtool graph radios1.png -s 1297810800 -e 1297814101 -h 300 -w 600 -t "Graph d'audience" \ DEF:rock=radios.rrd:rock:AVERAGE LINE3:rock#FF0000:"Rock" \ DEF:alternative=radios.rrd:alternative:AVERAGE LINE3:alternative#000000:"Alternative"
Avec cette commande on affiche les données de notre base RRD dans un fichier png.
* -s → date (toujours en timestamp) de départ du graph pas forcement celle des données.
* -e → date de fin du graph pas forcement celle des données.
* -h → height hauteur du graph ici 300px
* -w → width largeur du graph ici 600px
* -t → titre du graphique
* DEF: → fetch les datas depuis le fichier rrd
* rock: → le nom de notre flux qu'on avait déjà défini (mais on peut en choisir un autre c'est un nom utilisé uniquement pour afficher la valeur)
* =radios.rrd → le nom de notre fichier rrd
* rock: → ici c'est le nom exact du Data Source
* AVERAGE → pour dire qu'on veut une moyenne
* LINE3:rock#FF000:"Rock" → Pour afficher dans la légende notre valeur "rock" avec comme couleur rouge et comme label Rock.
Voilà pour l'instant vous savez : créer une base RRDTool, Updater les données de cette base et afficher un graphique.